import { Injectable } from '@nestjs/common';
import * as fs from 'fs'
import * as path from 'path'
import dayjs from 'dayjs';
const puppeteer = require("puppeteer");

@Injectable()
export class AntdService {
  constructor(
  ) { }

  // 获取icons
  async getAntdIcons(): Promise<any> {
    //创建一个Browser（浏览器）实例
    const browser = await puppeteer.launch({ headless: false });
    //在浏览器中创建一个新的页面
    const page = await browser.newPage();
    //打开页面
    await page.goto("https://ant.design/components/icon-cn");
    //等待需要爬取的内容出现
    await page.waitForSelector(".markdown > div:nth-child(6) > .anticons-list");
    //通过evaluate函数执行自定义的js代码获取要爬取的数据
    const newList = await page.evaluate(() => {
    	//创建一个空数组接收爬取的数据
        let data = [];
        //获取所有li元素
        let elements: any = document.querySelectorAll(".markdown > div:nth-child(6) > .anticons-list > li");
        //利用循环将内容添加到一个数组中
        for (let i=0; i<elements.length; i++) {
        	//获取新闻的标签
            const text = elements[i].innerText;
            data.push(text);
        }
        //返回数组
        return data;
    });
    console.log(newList);
    //关闭浏览器实例
    await browser.close();
    // //指定存储数据的json文件
    // const dirPath = `public/uploads/${dayjs().format('YYYYMMDD')}`;
    // const filePath = path.join(__dirname, '../../../../../', dirPath, "newList.json");
    // console.log(filePath, 'file');
    // //将爬取的数据写入json文件
    // fs.writeFile(filePath, JSON.stringify(newList), err => {
    //     if (err) {
    //         console.log(err);
    //     } else {
    //         console.log("success");
    //     }
    // })
    
    //返回爬取的数据
    return newList;
  }
}
